]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
overviewControls: Remove transitions before updating adjustment value
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 27 Apr 2020 23:04:08 +0000 (01:04 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 27 Apr 2020 23:28:50 +0000 (01:28 +0200)
The workspace switcher blocks state updates while the indicator is
animating. Since commit 9c1940ef9db5 the indicator is considered to
be animating when the workspace adjustment's value doesn't equal the
active workspace.

There is one case though where this breaks badly: When a workspace
is inserted before the active one, the adjustment's upper and value
properties are changed without transitions. But if that change happens
while there's an ongoing transition to the previously active workspace,
the value gets out of sync with the active workspace and we end up
blocking state updates indefinitely.

Fix this by removing any transitions before setting the adjustment
value.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2625

js/ui/overviewControls.js

index cc430f918d7dafc9b9941e11dfcbc5bf141e0af0..d1aac359373f7af4ee504e0a63b8b2631c7843b6 100644 (file)
@@ -473,6 +473,7 @@ class ControlsManager extends St.Widget {
 
         // A workspace might have been inserted or removed before the active
         // one, causing the adjustment to go out of sync, so update the value
+        this._workspaceAdjustment.remove_transition('value');
         this._workspaceAdjustment.value = activeIndex;
     }